System and method for seamless selection of multiple digital content

ABSTRACT

A system and method including an agent for selecting at least two songs among simultaneously streaming songs based on user information and storing one of the songs for later playback if the two songs overlap.

BACKGROUND OF THE INVENTION

[0001] A variety of web sites transmit music over the Internet. Onemanner in which this occurs involves an end user computer connected tothe Internet which sends a request for music to a radio station website. When the web site gets that request, it “sends” music to the userby sending various digitally-encoded packets. Typically, the radio website transmits whatever music is broadcast at the time by the radiostation. In this scenario, the user is not getting files of specificsongs, but rather the opportunity to listen to a radio broadcast overthe Internet instead of airwaves. When the packets arrive at the enduser's computer, the packets are reassembled in the correct order andconverted into audio signals. The audio signals are then provided to thespeakers connected to the computer.

[0002] There are many services which specialize in streaming music overthe Internet, such as www.NetRadio.com. These services typically make anumber of different audio streams available to end users. They may alsobe played using typical audio playing software such as RealNetworks,Inc.'s Real Player 7 and Microsoft's Windows Media Player 7.

[0003] It is common to analogize the availability of songs fromdifferent sources or the same source as “channels”. Each channel may beconsidered to represent the connection between two computers whereby onecomputer sends audio signals to another over a network. For example, onechannel on the web site www.a.com may stream rock songs whereas anotherchannel on www.b.com may stream pop songs. When a user's computerconnects to www.a.com, the web server hosting that web site will streamthe currently-playing rock song to the computer. Channels may beavailable from URL's with different Internet domain names.Alternatively, two channels may originate from the same web site andserver. In other words, two channels may comprise a computersimultaneously accessing two different songs from the same web server atthe same time. For example, each of the two songs may be divided intodiscrete pieces of data, with a piece of the first song arriving, then apiece of the second song arriving, then another piece of the first songarriving, then another piece of the second song arriving, etc.

[0004] One of the current problems with Internet music channels is thenumber of available channels. There may be hundreds of channels tochoose from and it is often difficult for the user to find a song theywant to hear. Moreover, even if the user finds a song on a channel theylike, the next song on the channel may not be as interesting to the useras another song on another channel.

SUMMARY OF THE INVENTION

[0005] The present invention addresses the foregoing issues. One aspectrelates to selecting content by: playing first data representative offirst content having a beginning and an end, the first data streamingvia a first channel during a first time period; automatically selectingsecond data representative of second content having a beginning and anend, the second content streaming via a second channel during a secondtime period such that the beginning of the second time period occursbefore the end of the first time period; at least between the beginningof the second time period and the end of the first time period, storingthe second data; and at the end of the first time period, playing thesecond data starting at the beginning of the second content.

[0006] In another aspect, the invention provides a method of playingsongs transmitted over a network including: playing a first songstreamed over the network between a first start time and first stoptime; automatically selecting, based upon information related to a user,a second song capable of being accessed over the network, the secondsong being streamed between a second start time and second stop timesuch that the second start time occurs between the first start and stoptimes; between the second start time and the first stop time, storingthe second song while the first song plays; and after the stop time ofthe first song, playing the stored second song from its beginning.

[0007] Yet another aspect provides a system of playing music comprising:a music player, a buffer, and a processor capable of executinginstructions. The instructions include buffering the streaming dataassociated with a second song while a first song is streaming andplaying, the second song being automatically selected and accessed basedon a user's preferences; and automatically playing the second song afterthe first song stops playing.

[0008] A further aspect provides a method transitioning between songs ofa digital music system. The method includes playing a first songstreaming on a first channel, identifying a second song streaming, or tobe streamed, on a second channel to be played after the first song,determining whether the start time of the second song will precede thetermination of the first song and, if so, storing the streaming secondsong in a buffer, after the first song terminates, playing the secondsong from the buffer.

[0009] Yet a further aspect relates to a computer-readable mediumincluding instructions for playing a first song streamed over thenetwork between a first start time and first stop time, automaticallyselecting, based upon information related to a user, a second songcapable of being accessed over the network, the second song beingstreamed between a second start time and second stop time such that thesecond start time occurs after the first start time and before the firststop time, between the second start time and the first stop time,storing the second song while the first song plays, and after the stoptime of the first song, playing the stored second song from itsbeginning.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010]FIG. 1 is a functional diagram of a system in accordance with oneembodiment.

[0011]FIG. 2 is a functional diagram of an agent and player inaccordance with one embodiment, including the relationship of the agentand player to speakers and a network.

[0012]FIG. 3 is user interface in accordance with an one embodiment.

[0013]FIG. 4 is a graph of exemplary song start and stop times.

[0014]FIG. 5 is a graph of exemplary song start and stop times.

DETAILED DESCRIPTION

[0015] As shown in FIG. 1, a system 50 in accordance with one embodimentof the invention comprises a network of computers such as end userpersonal computer 60 which communicates with web servers 70-72 viaInternet 80. Although only a few computers are depicted in FIG. 1, itshould be appreciated that a typical system can include a large numberof connected computers. Preferably, end user computer 60 is a generalpurpose computer having all the internal components normally found in apersonal computer such as, for example, central processing unit (CPU)61, display 62, CD-ROM 63, hard-drive 64, mouse 65, keyboard 66,speakers 67, microphone 68, modem 69 and all of the components used forconnecting these elements to one another. Although CPU 61 is shown as asingle processor, the instructions may actually be distributed to anumber of different components or processors for execution.

[0016] End user computer 60 communicates with the Internet 80 via modem69. End user computer 60 may comprise any device capable of processinginstructions and transmitting data to and from humans and othercomputers, including network computers lacking local storage capability,PDA's with modems and Internet-capable wireless phones.

[0017] Web servers 70-72 contain hardware for sending and receivinginformation over the World Wide Web, such as web pages or files. The webservers 70-72 may be typical web servers or any computer network serveror other automated system capable of communicating with other computersover a network, including the Internet, wide area networks or local areanetworks. For example, the system described above in connection with enduser computer 60 may also function as a web server.

[0018] As shown in greater detail in FIG. 2, the user computer 60contains instructions and a variety of data. Preferably, theinstructions and data are stored as a program on a medium such as thehard drive 64 of the computer 60. Although the data is shown separatelyfrom instructions 102, the data may be modified by the program. Thefunctions, methods and routines of the program are explained in moredetail below.

[0019] One set of data and instructions comprises streaming audio player200. When provided with the IP address of a server providing streamingaudio, player 200 requests and accesses that information in a mannerknown to those of ordinary skill in the art. These IP addresses may bethe TCIP/IP number address (such as 204.171.64.2), the URL associatedwith that address (such as www.Sony.com) or any other identifier whichidentifies a node of the applicable network.

[0020] Agent 100 comprises a set of instructions and data for, amongother things, selecting songs. Agent 100 comprises instructions 102which are executed by processor 61 in accordance with the stepsdescribed below. These instructions use and manipulate a variety ofdata.

[0021] One of the data items is User Profile Database 150. The UserProfile Database contains information about the user which the agent mayfind helpful in choosing songs. For example, the User Profile Database150 contains Genre Table 160. Genre Table 160 associates certain genreswith a metric that is indicative of how much the user likes a particulargenre of music. For example, Genre Table 160 may include a set ofrecords where each record has two fields: genre field 161 whichidentifies the genre and value field 162 which stores the metric. Forease of discussion, sample values for the table are shown below. It isnot necessary for the table to contain every possible genre. Genre Table150 Genre 151 Value 152 Rock 30 Pop 10 Country 20

[0022] User Profile Database 150 may also contain informationrepresenting how much a user likes or dislikes a particular artist. Inthis regard, Artist Table 170 associates certain artists with a metricthat is indicative of how much the user likes a particular genre ofmusic. For example, Artist Table 170 may include a set of records whereeach record has two fields: artist field 161 which identifies the artistand value field 162 which stores the metric. For ease of discussion,sample values for the table are also shown in FIG. 2. The negative valueindicates that the user dislikes the artist. It is not necessary for thetable to contain every possible artist. Artist Table 170 Artist 171Value 172 Artist1 40 Artist3 20 Artist10 −20

[0023] Artist Table 170 and Genre Table 160 associates information whichis directly applicable to songs with a value indicative of userinterest. For example, most songs fall into a genre and are performed byan artist. However, User Profile Database 150 advantageously alsocontains information that is not directly applicable to music but may beuseful in finding songs which the user is likely to be interested in.

[0024] Other song-specific information may also be used. By way ofexample, if a user has indicated that they like a particular artist,then the agent may select songs of related artists. For example, therelated artist may be an ex-member of the original artist. Similarly,the agent may be aware that users who like one particular band arehighly likely to enjoy another particular band.

[0025] Demographic Values 180 contains information about the user. Forexample, Demographic Values 180 may include data representing the user'sgender, birthday and the geographic region in which the user resides.

[0026] Demographic Rules 190 contains information regarding how theinformation about the user can be used to find songs the user may like.This information may be represented by a set of rules. By way ofexample, if it was believed that people tended to like songs that werepopular when they were 18 years old, a rule may add or subtract pointsto a song based on when it came out relative to a person's 18thbirthday. The rule is stored in the system in a syntax which caninterpreted by the system. Thus, a rule stating that a point is deductedfrom a song for each year the song came out before or after a user's18th birthday might be represented as the string: “Pointsdecrement=Abs([Song Publication Date]−[User Birth Year]−18).” Points andthe foregoing sample rule are explained in more detail below.

[0027] In addition to storing information about the user, agent 100 alsostores a schedule which identifies a collection of songs which can bestreamed to player 200. Preferably, Song Schedule 140 associates theidentity of a song with the channel it will be streamed on and the timeit will be streamed. This information may be stored in tabular formcontaining a variety of fields such as the song's title 141, the song'schannel 142, the artist name 143, the genre 143, the year it wascopyrighted 145, the time at which the song will begin streaming 146 andthe time at which the song will stop streaming 147. For the purposes ofillustration, exemplary values are shown below (time values being inhh:mm:ss). Song Schedule 140 Song Start Stop Title Channel Artist GenreYear Time Time 141 142 143 144 145 146 147 SongA a.com Artist1 Rock 199912:00:01 12:03:00 SongB b.com Artist2 Pop 1985 12:00:02 12:05:00 SongCc.com Artist3 Country 2001 12:01:03 12:06:00 SongD a.com Artist4 Pop1995 12:03:00 12:05:00 SongH d.com Artist6 Rock 1989 12:04:00 12:07:00SongE e.com Artist1 Rock 2000 12:05:00 12:10:00 SongF a.com Artist4 Rock2000 12:05:00 12:08:00 SongG c.com Artist5 Country 1985 12:06:0012:09:00

[0028] As songs are selected, they are added to a Playlist 199. ThePlaylist identifies the songs and the order they are to be played in.

[0029] Another set of data comprises buffer 195 which stores digitalaudio information for later use by player 200. Preferably, the buffer isa FIFO buffer, i.e., it outputs information to the player 200 in thesame order as it is stored in the buffer. The buffer is not limitedstructurally. For example, it may comprise a specialized circuit devotedto buffering music data. On the other hand, the buffer may also comprisea set of instructions executable by the processor which stores theincoming audio information on the hard drive of a general purposecomputer and then retrieves the information from the hard drive in theorder it was stored.

[0030] The agent may store other data as well, such as the valuesidentified as Maximum Ad Length 196, Maximum Buffer Length 197 andRemaining Time Threshold 198. This data is discussed in more detailbelow.

[0031] The data structures described herein, such as the foregoingtables, are exemplary only. Other data structures, such as differentfields and tables or completely different methods of storing informationsuch as XML or the like, may be used instead.

[0032] In addition to maintaining the aforementioned data, the agentalso sends information to the player 200. As discussed more below, thisinformation may include the IP address of a streaming music channel,commands (such as instructions to play music) and data representingmusic.

[0033] Although some of the operations of the agent are automatic, otheroperations may be instigated by a user. For these sorts of operations,the agent provides a user interface such as the user interface 300 shownin functional form in FIG. 3. Information relating to the currentlyplaying song is shown in textbox 301, with its start and stop timesshown in textboxes 302 and 303, respectively. A user may play or stop orsong, or go to the next or previous song, by activating buttons 304-307,respectively. Some of the buttons may be disabled based on the state ofthe agent. For example, if the player is only streaming currentlyavailable songs, the previous song button 307 may be disabled by theagent. Song finder buttons 308 is used to search for a new song.Information about the next song to be displayed is shown in textbox 301,with the start and stop times of the next song shown in textboxes 309and 310 respectively. The reject button 311 allows a user to inform theagent that the user does not like the next song. Clicking the edit userinfo button 312 would open a window or launch a program which allows theuser to edit the information contained in the User Profile Database 150.

[0034] Web server 72 provides a variety of audio advertisements inresponse to requests from other computers on the network. The ads are ofvarious durations and stored so that when a request for an ad isprovided along with a particular duration, an audio file meeting thatcriteria can be sent to the user. The ads are stored in a manner whichassociates certain durations of times with audio files such as Ad Table73. Exemplary values for Ad Table 73 follow for the purposes ofillustration. Advertisement Table Duration File 58 seconds Ad1.mp3 59seconds Ad2.mp3 60 seconds Ad3.mp3 61 seconds Ad4.mp3 62 seconds Ad5.mp3

[0035] In operation the agent obtains the music schedules from variousmusic channels. For example, each web site may provide a schedule of thesongs to be played on the channels it host. Alternatively, the agent mayobtain the information from a central storage facility providing a listof various songs on various channels. Indeed, the agent may not be ableto determine the start and stop time of songs that are scheduled to playin the future. Rather, and particularly if there are legal benefits todoing so, the music channel servers 70-71 may only release textualinformation (title, artist, genre, remaining length, etc.) about thesong while it is playing. Accordingly, the schedule may only comprisesongs which are currently playing, and may not include the stop time ofthe song.

[0036] The steps of actually selecting and playing a song may start inany number of ways, including the user indicating that they would liketo hear a song. In such an instance, the user will click the Song Finderbutton 308 of user interface 300 (FIG. 3). The agent interprets thiscommand as requiring the agent to immediately start playing the songwhich best matches the user's preferences.

[0037] Once the user indicates that they want the agent to find the bestsong, the agent will create a list of the currently playing songs. Onemanner in which this may be performed is for the agent to query SongSchedule Table 140 for all songs having start times before the currenttime and stop times after the current time. For example, if the currenttime is 12:02:05 pm, the agent would pull the following set of recordsfrom Song Schedule Table 140. SongA a.com Artist1 Rock 1999 12:00:0112:03:00 SongB b.com Artist2 Pop 1985 12:00:02 12:05:00 SongC c.comArtist3 Country 2001 12:01:03 12:06:00

[0038] Preferably, the agent will filter out (either before or duringthe step of retrieving current songs) those songs which are almost over.This filtering may occur by not including songs whose remaining time isless than a particular value, or whose remaining time is less than aparticular percentage compared to the entire length of the song.Regardless, the threshold value may be stored in Remaining TimeThreshold 198. For example, if the threshold value is 61 seconds, thenSongA would not be included in the list of currently playing songsbecause its end time (12:03:00) will occur less than 61 seconds from thecurrent time (12:02:05). Thus, the remaining possibilities include SongBand SongC.

[0039] Once a list of currently-playing songs is compiled, the agentchooses the best song to play based on the user's profile. One manner inwhich this step may be performed is by assigning point values to eachsong based on the information contained in User Profile Database 150 andthen choosing the song with the greatest point value. For example, basedon the exemplary values contained in Genre Table 160, 10 points areassigned to SongB because it is a member of the “Pop” genre and 20points are assigned to SongC because it is a member of the Countrygenre.

[0040] The agent also uses the Demographic Rules and Values to select asong the user is likely to be interested in. The agent retrieves a rulefrom Demographic Rules 190 and applies the rule to the information ithas about the user and song. Using the example above, for each song, theagent retrieves the user's birthday 181, the year 145 of the song andthe rule “Points decrement=Abs([Song Publication Date]−[User BirthYear]−18). ” If the user was born in 1970 and the current year is 2001,then the exemplary rule for SongC is realized as follows: “Pointsdecrement=Abs(2001−1970−18). ” In other words, the rule indicates that13 points are to be decremented from the total points associated withSongC (reflecting the difference between the song's year of publicationand the user's 18th birthday). For SongB which was published in 1985,the points decrement is far less, i.e. 2 points. Thus, SongB's total is20−2=+18 and SongC's total is 10−13=−3. Based on these point, the agentwill choose SongB.

[0041] Accordingly, song agent 100 can choose a song based not only onthe user's music-specific preferences but also based on informationrelating to the user which is not music specific. Moreover, the songagent is able to prioritize the songs that it finds. Based on the artistand demographic information, for example, the agent may determine thatthe user would be interested in any number of songs. However, using theweighted values, the agent can pick the “best” song.

[0042] Once the song is chosen, song agent 100 sends the IP address ofthe selected channel to player 200 thus causing the player to access thedata streaming from that IP address. Using the foregoing example, songagent would send the URL address “www.b.com” to player 200. Agent 100simultaneously commands the music player 200 to begin playing whatevermusic is being streamed to it.

[0043] Song agent 100 also stores the information regarding the currentsong in Playlist 199 in a manner which identifies the current song.Thus, after SongB is selected, the playlist may appear as follows:Playlist 199 Cur- SongB b.com Artist2 Pop 1985 12:00:02 12:05:00 rentSong Next Song

[0044] Information relating to the current song is also displayed in theuser interface 300. As shown in FIG. 3, the information relating to thecurrent song is displayed in the text box 301, the start time in textbox 302 and the stop time in text box 303.

[0045] Preferably, the agent does not wait for the current song to endbefore it starts looking for the next one. Rather, it immediately beginssearching for the next song to play after the current one ends.

[0046] In one aspect, the agent will limit the next song to those songsthat begin immediately after the current one ends. Specifically, agent100 queries the Song Schedule Table 140 for all songs having a starttime which is equal to the stop time of the current song. Using theexample values for Song Schedule Table 140, the agent would thus selectthe following songs as possible songs to play when SongB ends: SongEe.com Artist1 Rock 2000 12:05:00 12:10:00 SongE a.com Artist4 Rock 200012:05:00 12:08:00

[0047] Once a list of the next possible songs to play is retrieved,agent 100 selects a song from the list in the same manner it chose asong from the list created in response to the user clicking song finderbutton 308. Using the exemplary values contained in the Artist Table170, the agent would choose SongE over SongF because the user hasassigned positive points to Artist1 and Artist4 is unlisted.

[0048] Once the next song is chosen, agent 100 stores the informationrelating to the next song in Playlist 199. Thus, after SongE isselected, the playlist may appear as follows: Playlist 199 Cur- SongBb.com Artist2 Pop 1985 12:00:02 12:05:00 rent Song Next SongE e.comArtist1 Rock 2000 12:05:00 12:10:00 Song

[0049] Information relating to the next song is also displayed in theuser interface 300. As shown in FIG. 3, the information relating to thecurrent song is displayed in the text box 313, the start time in textbox 309 and the stop time in text box 310.

[0050] Once the current song is done playing, agent 100 modifiesplaylist 199 so that the next song is now the current song. Thus, asdescribed above, the agent sends the IP address of the selected channelof the newly current song to player 200, thus causing the player toaccess the data streaming from that IP address. Using the foregoingexample, song agent would send the URL address “www.e.com” to player 200and simultaneously command the music player 200 to begin playing themusic streamed from that channel.

[0051] As the newly current song is playing, agent 100 will search forthe next song and the process will continue as described above.Alternatively, rather than keeping only two songs in the playlist (i.e.,the current and next song), agent 100 may fill playlist 199 with a stackof songs to be played one after the other.

[0052] In another embodiment, the agent does not limit itself to songswhich begin immediately after the current song ends. Rather, the agentmay also select songs which begin some duration of time after thecurrent song ends. If one song is better than the other but starts alittle later, a user may not mind waiting for the better song. Forexample, SongG was omitted from the list of possible songs to play afterSongB ends because SongG starts at 12:06:00 and SongB ends at 12:05:00.However, based on the User Profile Database, it may be that SongG ismore likely to be interesting to the user than the songs (SongE andSongF) which begin immediately after the current song ends.

[0053] Accordingly, agent 100 queries the Song Schedule Table 140 forall songs whose start time minus the current song's stop time is lessthan some threshold duration. This threshold duration may be stored bythe agent as Maximum Ad Length 196. Using the foregoing example, if theMaximum Ad Length were 61 seconds, then agent 100 would select thefollowing songs as possible songs to play when SongB ends because eachsong has a start time which is less than 61 seconds after the SongB stoptime: SongE e.com Artist1 Rock 2000 12:05:00 12:10:00 SongF a.comArtist4 Rock 2000 12:05:00 12:08:00 SongG c.com Artist5 Country 198512:06:00 12:09:00

[0054] The Maximum Ad Length could be set to any time. For example, adsare more likely to be thirty seconds in length.

[0055] The agent then selects the best song to play from this expandedlist based on the user's profile information and the song information asdiscussed above. It shall be assumed for the purposes of example thatthe agent would choose SongG over the other songs after it performs theprocess of evaluating the songs for the potential desirability to theuser.

[0056] Advantageously, the agent does not simply switch to the channelstreaming the next song upon the end of the current song. If it did, thegap between the songs would cause the player to play only portions of asong. Specifically, if the agent switches from a first channel to asecond channel at the end of the current song, then the user will hearthe end of the current song on the second channel before the nextselected song begins. On the other hand, if the agent switches from afirst channel to a second channel at the beginning of the next selectedsong, then the user will hear the beginning of the next song on thefirst channel before the next selected song begins.

[0057]FIG. 4 illustrates the gap using the foregoing example. As shownby the shaded portion, there is a gap of one minute between the end ofSongB on channel b.com and the beginning of SongG on channel c.com. Ifagent 100 instructs player 200 to switch from channel b.com to channelc.com when SongB ends at 12:05, the user will hear the beginning of thenext song on channel b.com (SongX) until the switch occurs. Once theswitch occurs, SongX will be interrupted in the middle in the song. Onthe other hand, if agent 100 waits until the beginning of SongG (12:06)before it instructs player 200 to switch from channel b.com to channelc.com, then the user will be dropped into the middle of SongY on channelc.com. In either instance, the user will hear either the beginning orend of a song that the agent never selected. This has the potential ofbeing disruptive to the listening experience.

[0058] The agent addresses the problem by inserting audio informationfrom a different source into the gap. For example, as soon as thecurrent song ends, the agent sends a message via the Internet to adserver 72. The message requests an advertisement having a durationequivalent to the length of the gap between selected songs. Upon receiptof the request, advertisement server 70 selects an advertisement basedon the requested duration. For example, in response to a request for a60 second advertisement, advertisement server 70 would stream the audioinformation represented by the file Ad3.mp3 to the end user computer 60.If an ad having that exact duration is not available, the server maystream the closest file it has to that duration. Preferably, it wouldstream the largest file it has which still fits within the gap.Alternatively, the agent may stack advertisements together to fill thegap. For example, if the gap between songs is 90 seconds and the longestads on the advertisement server are 30 seconds, then the agent may playthree 30-second ads in a row to fill the 90-second gap.

[0059] Agent 100 simultaneously instructs player 200 to access the datastreaming from Ad Server 70. Accordingly, the user will hear theselected advertisement while the user is waiting for the next selectedsong to begin. Once the next selected song begins, agent 100 instructsplayer 200 to access the data streaming the channel carrying the nextselected song.

[0060] There also may be instances where the next best song does notstart immediately or some time after the end of the current song ends,but rather starts before the end of the current song. For example, SongHwas omitted from the list of possible songs to play after SongB endsbecause SongH starts at 12:04:00 and SongB ends at 12:05:00. However,based on the User Profile Database, it may be that SongH is more likelyto be desired by the user than the songs which begin immediately (SongEand SongF) or a short time (SongG) after the end of the current song(SongB).

[0061] In another embodiment, the agent adds such songs to the list ofpossible songs for selection. When selecting possible next songs, agent100 chooses a range of acceptable start times. To determine the bottomend of the range, the agent may take the end time of the current songand subtract a threshold duration stored in Maximum Buffer Length 197.To determine the top end of the range, the agent takes the end time ofthe current song and adds the threshold duration stored in Maximum AdLength 196. The agent then queries the Song Schedule Table 140 for allsongs whose start time falls within that range. Using the exemplaryvalues of Song Schedule 140, the agent would select the following songsas possible songs to play when SongB ends if the Maximum Buffer Length197 and Maximum Ad Length 196 are both set at 61 seconds: SongH d.comArtist6 Rock 1989 12:04:00 12:07:00 SongE e.com Artist1 Rock 200012:05:00 12:10:00 SongF a.com Artist4 Rock 2000 12:05:00 12:08:00 SongGc.com Artist5 Country 1985 12:06:00 12:09:00

[0062] Agent 100 then selects the next song to play from this expandedlist in the same manner as described above. It shall be assumed for thepurposes of example that the agent would choose SongH over the othersongs after it performs the process of evaluating the songs.

[0063] Advantageously, the agent does not simply switch to the channelstreaming the next song if the next song has already started. If it did,the user would miss the beginning of the next selected song. Forexample, as shown in FIG. 5, SongH starts at 12:04, i.e. one minutebefore SongB ends. The shaded portion in FIG. 5 represents the amount ofoverlap between the selected songs.

[0064] Instead of simply switching at the specific start and stop times,the next song is placed in an anticipatory buffer. Specifically, whilethe current song is being streamed to player 200 on one channel, agent100 simultaneously requests streaming audio associated with the selectednext song on the other channel as soon as the next song begins. However,the agent does not instruct the player to play the audio on the otherchannel. Rather, agent 100 stores the streaming data in Buffer 195. Forexample, at 12:05 pm, agent 100 accesses the streaming data fromwww.d.com.

[0065] Once the current song ends, agent 100 then streams the audioinformation out of buffer 195 directly to the player 200 and commandsthe player to play the data streamed from agent 100. Because buffer 195outputs data in the order it was received, the buffer will stream theaudio information it is storing to the player, starting with thebeginning of the song. For example, player 200 will play SongH frombeginning to end based on the information contained in buffer 195.

[0066] While the next song is streaming from the buffer to the player,the agent is not idle. Rather, agent 100 begins the foregoing steps ofselecting songs all over again.

[0067] Advantageously, the buffer may be used even if a schedule ofupcoming songs is unavailable. For example, even if the music channelservers only provide information about the currently playing song,computers and computer networks will often be fast enough to beginbuffering the song as soon as information about it become available.This is particularly true if the textual information describing the songis made available at least a short duration of time before the songstarts.

[0068] The various embodiments provide numerous advantages. In oneaspect, the agent intelligently chooses songs for a user from thehundreds of possible channels and it makes that decision by evaluatingthe likelihood of the user enjoying the song. Moreover, rather thansimply relying on information which is particular to the song, the agentpreferably uses a variety of categories of data to arrive at itsconclusion including: information which is specific to the songregardless of the user information (such as the song's genre);information which is specific to the user's preferences with respect tomusic (such as the extent of a user's preference for a particulargenre); and information which is related to the users regardless of theuser's music-specific preferences (such as the user's age).

[0069] Another advantage is its ability to give the user seamlesstransitions between selected songs which have a gap between the end ofone and the start of the other. Rather than disrupting the user withinterrupted songs, the agent intelligently chooses audio to play in thegap so the user has a seamless user experience. The agent simultaneouslyuses the gap in a manner which makes the invention attractive not onlyto users but also marketers. For example, the audio to be played in thegap may include an advertisement which is chosen and maintained by anadvertising company.

[0070] Another advantage of the agent is its ability to handle songswhich overlap. Rather than simply abandoning good songs because theyhave already started, the agent plans ahead by putting the nextoverlapping and selected song in a buffer while the currently selectedsong is playing. Accordingly, the user is not deprived of hearing a songthey are likely to be interested in.

[0071] Yet another unique advantage of the agent is the way itsynergistically combines all of these aspects and advantages to create awhole which rises above the sum of its parts. The agent is able toselect the best song regardless of overlaps and gaps. It seamlesslymoves from buffering one minute to playing advertisement in gaps thenext.

[0072] The features also complement one another. For example, theinvention may also be used when the length of a gap between songs is notknown. If the start time of the second song is not known, the agent maycontinuously play advertisements until the second song starts. If thesecond song suddenly begins and an advertisement is still playing, theagent may buffer the second song until the end of the currentadvertisement, thus providing a seamless transition.

[0073] Another advantage is the ability is the numerous alternatives andoptions which can be implemented, making the agent extremely flexible.

[0074] For instance, if the user initiates some action on the userinterface 300 which causes the selected song to stop playing, the agent100 may record that indication in the User Profile Database 150. Forexample, if the user clicked the song finder button 308 while SongB wasplaying, the agent 100 may add a record to artist table 170 whichassociates Artist2 with a negative value. The next time that artistcomes up in the list of possible choices, all other things being equalthe artist's song would not be selected.

[0075] The user may also reject the next chosen song by clicking thereject button 311. This would cause the agent to search for a new songand the action would be stored in the User Profile Database.

[0076] The invention may also be used to search for specific songs. Forexample, the user may indicate that they are only interested in songsfrom a particular artist such as Madonna. Alternatively, the user mayindicate that they are only interested in dance songs from the 1980's.In either instance, the agent will only select songs which satisfy thesearch criteria.

[0077] Moreover, it is not necessary for the gap-filling audioinformation to be streamed from a remote location during the gap.Rather, the gap-filling audio may be downloaded while the current songis playing and stored in buffer 195 so that it is immediately availablewhen the current song ends.

[0078] Moreover, in one aspect, the gap-filling information is notobtained from an outside source at all. Rather, the agent may search enduser computer 60 to see if it has any audio information, such as othersongs, stored on hard drive 64 which fit the gap. If so, rather playingan advertisement the player may play a locally stored song. This isparticularly advantageous if the agent discovers a particularly largegap between two songs of if there is an unanticipated (or anticipated)break in the transmission of data over the network.

[0079] Indeed, rather than having the player connect directly to thenetwork, the agent may obtain all of the audio data destined for player200 and store it in buffer 195. When two songs overlap, the buffer wouldcontain the audio information for both songs. The data associated withthe next selected song would be streamed to player 200 after the currentsong is finished playing.

[0080] It is also not necessary to consider the agent and player to bedifferent programs. Rather all of the functionality can be included in asingle product. Alternatively, the agent and player may be provided bycompletely different companies, one specializing in audio players andthe other specializing in song selectors.

[0081] In fact, it is not necessary that the agent and player be limitedto software for a general purpose computer. The player may besolid-state digital music player such as Sony's Memory Sticks™ Walkmanwhich connects to a personal computer. The agent could run on the PC andautomatically download the selected songs to the player. Or instead, theagent could be stored on the dedicated device if the device is able toconnect to a network.

[0082] It is also preferable for the agent to run in the background ofthe user's computer, constantly or periodically searching and updatingsong schedules while other applications are running. The advantage ofsearching for songs in the background is that the Song Schedule 140 willbe up to date and ready for access in an instant; the user will not haveto wait for the agent to search the network when they click the songfinder button.

[0083] Although the agent is particularly advantageous when used withsongs and other musical works, the agent may also be used in connectionwith other audio information. For example, the invention may selectpoems or news reports instead. The agent may also be used to selectnon-audio streaming content, such as music videos as well.

[0084] Unless stated to the contrary, any use of the words such as“including,” “containing,” “comprising” and the like, means “includingwithout limitation” and shall not be construed to limit any generalstatement that it follows to the specific or similar items or mattersimmediately following it. References to a “plurality” of things means atleast two of the things.

[0085] Except where the context indicates to the contrary, all exemplaryvalues are intended to be fictitious, unrelated to actual entities andare used for purposes of illustration only.

[0086] Most of the foregoing alternative embodiments are not mutuallyexclusive, but may be implemented in various combinations to achieveunique advantages. As these and other variations and combinations of thefeatures discussed above can be utilized without departing from theinvention as defined by the claims, the foregoing description of theembodiments should be taken by way of illustration rather than by way oflimitation of the invention as defined by the claims.

1. A method of selecting content comprising: playing first datarepresentative of first content having a beginning and an end, the firstdata streaming via a first channel during a first time period;automatically selecting second data representative of second contenthaving a beginning and an end, the second content streaming via a secondchannel during a second time period such that the beginning of thesecond time period occurs before the end of the first time period; atleast between the beginning of the second time period and the end of thefirst time period, storing the second data; and at the end of the firsttime period, playing the second data starting at the beginning of thesecond content.
 2. The method of claim 1 wherein the content includesaudio information.
 3. The method of claim 2 wherein the audioinformation includes songs.
 4. The method of claim 1 wherein the secondcontent is selected based on a user's preference for particular types ofcontent.
 5. The method of claim 4 wherein the type is the genre of thesong.
 6. The method of claim 4 further including the step of determiningthe user's preference based on demographic information relating to theuser.
 7. The method of claim 6 wherein the demographic informationincludes the user's age.
 8. The method of claim 6 wherein thedemographic information includes the user's geographic region.
 9. Themethod of claim 1 wherein the demographic information includes theuser's gender.
 10. The method of claim 1 wherein the content is accessedvia a connection over a network.
 11. The method of claim 10 wherein thenetwork is the Internet.
 12. The method of claim 1 wherein the step ofselecting includes obtaining information about the second content over anetwork.
 13. The method of claim 12 wherein the information is obtainedby accessing text over the network.
 14. The method of claim 13 whereinthe text is available for transmission when the content associated withthe text is available for access.
 15. The method of claim 14 wherein thetext includes the title of the content.
 16. The method of claim 1wherein the first and second data are streamed from servers associatedwith different URL domains.
 17. The method of claim 16 wherein thenetwork is the Internet.
 18. The method of claim 17 wherein the firstcontent is streamed on a different Internet channel than the secondcontent.
 19. A method of playing songs transmitted over a networkincluding: playing a first song streamed over the network between afirst start time and first stop time; automatically selecting, basedupon information related to a user, a second song capable of beingaccessed over the network, the second song being streamed between asecond start time and second stop time such that the second start timeoccurs between the first start and stop times; between the second starttime and the first stop time, storing the second song while the firstsong plays; and after the stop time of the first song, playing thestored second song from its beginning.
 20. The method of claim 19wherein the step of selecting a second song includes searching thenetwork songs for songs which are currently playing or are about to beplayed.
 21. The method of claim 19 wherein the information relating tothe user includes the user's music preferences.
 22. The method of claim21 wherein the user's music preferences are determined based ondemographic information relating to the user.
 23. The method of claim 22wherein the demographic information includes the user's geographic area.24. The method of claim 19 wherein the stop time of the first songrepresents the point of time when the user terminated the playing of thesong.
 25. A system of playing music comprising: a music player; abuffer; and a processor capable of executing instructions, theinstructions including: buffering the streaming data associated with asecond song while a first song is streaming and playing, the second songbeing automatically selected and accessed based on a user's preferences;and automatically playing the second song after the first song stopsplaying.
 26. The system of claim 25 wherein the music player includessoftware instructions stored on a general purpose computer.
 27. Thesystem of 24 including speakers for playing the songs.
 28. A method oftransitioning between songs of a digital music system comprising:playing a first song streaming on a first channel; identifying a secondsong streaming, or to be streamed, on a second channel to be playedafter the first song; determining whether the start time of the secondsong will precede the termination of the first song and, if so, storingthe streaming second song in a buffer; and after the first songterminates, playing the second song from the buffer.
 29. The method ofclaim 28 further including identifying a third song streaming, or to bestreamed, on a channel other than the second channel; determiningwhether the start time of the third song will precede the termination ofthe second song and, if so, storing the streaming third song in abuffer; and after the second song terminates, playing the third songfrom the buffer.
 30. A computer-readable medium including instructionsfor: playing a first song streamed over the network between a firststart time and first stop time; automatically selecting, based uponinformation related to a user, a second song capable of being accessedover the network, the second song being streamed between a second starttime and second stop time such that the second start time occurs afterthe first start time and before the first stop time; between the secondstart time and the first stop time, storing the second song while thefirst song plays; and after the stop time of the first song, playing thestored second song from its beginning.